package main

import (
	"fmt"
)

func Swap(a, b int) (int, int) {
	return a, b
}

// 可变数量的参数
// more 对应 []int 切片类型
func Sum(a int, more ...int) int {
	for _, v := range more {
		a += v
	}
	return a
}

func Print(a ...interface{}) {
	fmt.Println(a...)
}

/**
自增操作
*/
func Inc(num int) (v int) {
	v = num
	defer func() {
		v++
	}()
	return v
}

func main() {

	a := 1
	b := []int{1, 2, 3, 4, 5}
	//fmt.Println(reflect.TypeOf(b))
	fmt.Println(Sum(a, 1, 2, 3, 4, 5))
	fmt.Println(Sum(a, b...)) // b...  <====> 1,2,3,4,5

	fmt.Println("----[]interface{}----")
	var ai = []interface{}{123, "abc"}
	Print(ai...)
	Print(ai)
	/*
		第一个Print调用时传入的参数是a...，等价于直接调用Print(123, "abc")。
		第二个Print调用传入的是未解包的a，等价于直接调用Print([]interface{}{123, "abc"})
	*/
	fmt.Println("----defer----")
	fmt.Println(Inc(1))

}
